package com.doit.day07

import org.apache.spark.sql.SparkSession

/**
 * @Author:
 * @WX: 17710299606
 * @Tips: 学大数据 ,到多易教育
 * @DOC: https://blog.csdn.net/qq_37933018?spm=1000.2115.3001.5343
 * @Description:
 * 自定义函数
 * spark内置了很多函数 一般能满足我们的需求
 * UDF  一行  对一
 * UDAF 聚合  sum  avg
 * -- UDTF  一对多  explode
 *
 */
object Demo06CustomUDAF {
  def main(args: Array[String]): Unit = {

    val session = SparkSession.builder()
      .appName("test")
      .master("local[*]")
      .getOrCreate()

    import session.implicits._
    import org.apache.spark.sql.functions._


    val df = session.read
      .json("data/agg/")


     //注册  ,使用
     val myMax = new MyUdaf()

    df.printSchema()

    session.udf.register("myMax" , udaf(myMax))

    df.createTempView("tb_user")

    session.sql(
      """
        |select
        |gender ,
        |myMax(age)
        |from
        |tb_user
        |group by gender
        |""".stripMargin).show()





  }

}
